// Copyright Epic Games, Inc. All Rights Reserved.

#include "LyraAimSensitivityData.h"

// 包含头文件

#include "Settings/LyraSettingsShared.h"

// 包含共享设置头文件，可能包含ELyraGamepadSensitivity枚举的定义

#include UE_INLINE_GENERATED_CPP_BY_NAME(LyraAimSensitivityData)

// UE内联生成代码

// 构造函数实现
ULyraAimSensitivityData::ULyraAimSensitivityData(const FObjectInitializer& ObjectInitializer)
	: Super(ObjectInitializer)  // 调用父类构造函数
{
	// 初始化灵敏度映射表
	// 使用统一初始化语法创建TMap
	SensitivityMap =
	{
		// 将每个灵敏度枚举值与对应的浮点标量关联
		{ ELyraGamepadSensitivity::Slow,			0.5f },    // 慢速：50%灵敏度
		{ ELyraGamepadSensitivity::SlowPlus,		0.75f },   // 慢速+：75%灵敏度
		{ ELyraGamepadSensitivity::SlowPlusPlus,	0.9f },    // 慢速++：90%灵敏度
		{ ELyraGamepadSensitivity::Normal,		1.0f },    // 正常：100%灵敏度（基准值）
		{ ELyraGamepadSensitivity::NormalPlus,	1.1f },    // 正常+：110%灵敏度
		{ ELyraGamepadSensitivity::NormalPlusPlus,1.25f },  // 正常++：125%灵敏度
		{ ELyraGamepadSensitivity::Fast,			1.5f },    // 快速：150%灵敏度
		{ ELyraGamepadSensitivity::FastPlus,		1.75f },   // 快速+：175%灵敏度
		{ ELyraGamepadSensitivity::FastPlusPlus,	2.0f },    // 快速++：200%灵敏度
		{ ELyraGamepadSensitivity::Insane,		2.5f },    // 极速：250%灵敏度
	};
}

// 灵敏度枚举到浮点值转换函数的实现
const float ULyraAimSensitivityData::SensitivtyEnumToFloat(const ELyraGamepadSensitivity InSensitivity) const
{
	// 在映射表中查找对应的灵敏度值
	if (const float* Sens = SensitivityMap.Find(InSensitivity))
	{
		// 如果找到，返回对应的浮点值
		return *Sens;
	}

	// 如果未找到对应的枚举值，返回默认的1.0f（正常灵敏度）
	return 1.0f;
}